#/usr/bin/python
#_*_coding:utf-8_*_
# 装饰器是一个函数，至少2层
def auth(func):        #这里的func代表f1,也就是auth(1)
    def inner():
        print 'yanzhen'    #先执行验证里的内容
        func()        #这里func()等于f1()，既运行f1函数
        print 'rizhi'        #这里表示验证通过后再加的一个功能，比如日志
    return inner    #这里返回已经经过验证的函数

def auth_arg(func):        #这里的func代表f1,也就是auth(1)
    def inner(arg):
        print 'yanzhen'    #先执行验证里的内容
        func(arg)        #这里func()等于f1()，既运行f1函数
    return inner    #这里返回已经经过验证的函数

@auth        #使用了装饰器，这里会把下面的函数名传给上面的auth
def f1():
    print 'f1'

@auth_arg
def f5(arg):
    print 'f5',arg


f1()
print '================='
f5('1.1.1.1')